import structurepy as spy
import matplotlib.pyplot as plt

fname="XDATCAR2"
xdat=spy.XDAT(fname,time=True)#time:是否显示计算/读取用时
#这一步读取了XDATCAR文件，并计算出每帧两两原子间的距离并保存到cache文件中（默认文件名：.structure.fname）,如cache文件存在，则直接读取
if not xdat.rdf_calced:
    xdat.all_rdf()
#可选，提前计算所有元素对间的rdf。如果不要这两行，后面使用时再算
SiIndex=xdat.structure.atmnamelist.index('Si')
OIndex=xdat.structure.atmnamelist.index('O')
rdf=xdat.structure.get_rdf(SiIndex,OIndex)#获取Si和O的径向分布函数，dr默认为0.05，如需调整可加参数：xxxx.get_rdf(SiIndex,OIndex,dr=0.1)
print("r:",end="\t")
for r in rdf[0]:
    print(r,end="\t")
print("")
print("g:",end="\t")
for g in rdf[1]:
    print(g,end="\t")
plt.plot(rdf[0],rdf[1])
plt.show()
print("")
print("推荐的截断键长为：%s"%spy.r_min(*rdf))
print("平均键长为：",end='\t')
print(xdat.structure.averageBondLength(SiIndex,OIndex))
print("平均配位数为：",end='\t')
print(xdat.structure.averageCN(SiIndex,OIndex))

#xdat.save()#将所有的中间数据全部存起来，下次运行时直接用(if need)。

